Geography of Covid Vaccine Hesitancy in the U.S.
Vaccine Line in Boston Massachusets, March 2021
Introduction
Back in March, I created my PUG Shiny project with a focus on COVID vaccine distribution. At the time, the issue facing the united states was primarily one of distribution: people who wanted the vaccine couldn’t get it. Eligibility was restricted state by state to allocate a precious resource. Even people who were eligible needed to get lucky and navigate online sign up forms, vouching for fewer spots than people. Here’s my Shiny App, improved and updated with the latest data:
`
Motivation
Over the past six weeks, the supply chain has greatly improved, and access is no longer such a pressing issue. The issues facing the country have evolved: the issue now is acheiving heard immunity, and getting everyone vaccinated. In March, I didn’t know anyone who had gotten a vaccine. But now in April, I don’t know anyone who hasn’t gotten one. I wanted to map out where in the country people are the most hesitant to get vaccinated. Knowing the most resistant geographies could be useful information for government organizations to focus their vaccine advocacy efforts.
Anti-Vax Protesters in Texas
Working with Public Health Data Sets
Inter-Agency Knowledge Sharing
I investigated a CDC published dataset titled “Vaccine Hesitancy for COVID-19: County and local estimates.” The dataset comes from a publication by the ASPE, the Office of the Assistant Secretary for Planning and Evaluation, of the U.S. Department of Health and Human Services. Specifically, the data was collected via the U.S. Census Bureau’s Household Pulse Survey, 2021 Week 28, April 14-26.
Variables of Interest
The dataset contained several demographic variables measured for each U.S. county. The variables of interest for this project are “Estimated Hesitant” and “Estimated Strongly Hesitant”, which measure the percent of adults in each county who indicated they are either hesitant, or strongly hesitant, respectively, to get vaccinated. Due to the phrasing of the variable description, I assume that survey respondents who indicated either “Hesitant” or “Strongly Hesitant” are all adults who have not yet received a covid vaccine. You can check out the ASPE’s methodology for these estimates here.
Data Wrangling
Fauci with a headache, or …
fauchi
Data Wrangling
First, I cleaned up the CDC dataset:
my_data0 <- my_data %>%
#select columns relevant to my investigation
select(c("County Name","State","Estimated hesitant", "Estimated strongly hesitant","Social Vulnerability Index (SVI)","SVI Category","Ability to handle a COVID-19 outbreak (CVAC)","CVAC Category","Percent adults fully vaccinated against COVID-19 as of 3/30/2021"))%>%
#change names to lowercase for easy merging with map dataset
mutate(State = tolower(State), `County Name` = tolower(`County Name`))%>%
#rename columns to r-friendly names
rename(region = State, subregion = `County Name`) %>%
rename(est_hesitant = "Estimated hesitant")%>%
rename(est_strong_hesitant = "Estimated strongly hesitant")%>%
rename(svi_cat = "SVI Category" )%>%
rename(svi = "Social Vulnerability Index (SVI)" )%>%
rename(pct_full_vaxed = "Percent adults fully vaccinated against COVID-19 as of 3/30/2021")
#edit subregion (county name) values to match their equivs in map dataset
my_data0$subregion <- str_remove(my_data0$subregion, " county.*")
my_data0$subregion <- str_remove(my_data0$subregion, ",.*")
Then, I added mapping capabilites by merging my_data0 with the usa_counties dataset
usa_counties <- map_data(map = "county", region = ".")
my_data0_map <- my_data0 %>%
inner_join(usa_counties, by =c("subregion", "region"))
Mapping County-Level Vaccine Hesitancy
Hesitancy Map
Strong Hesitancy Map
The Code behind it all
Mapping of County Vaccine “Hesitancy” Rates
ggplot(my_data0_map, aes(x = long, y = lat, group = group, fill = est_hesitant)) +
geom_polygon(color = "white", size = 0.05) +
theme_void() +
coord_fixed(ratio = 1.3) +
labs(fill = "Proportion of residents hesitant to be vaccinated") +
theme(legend.position="bottom")+
scale_fill_distiller(palette = "Spectral")
Mapping of strong hesitancy
ggplot(my_data0_map, aes(x = long, y = lat, group = group, fill = est_strong_hesitant)) +
geom_polygon(color = "white", size = 0.05) +
theme_void() +
coord_fixed(ratio = 1.3) +
labs(fill = "Proportion of residents STRONGLY hesitant to be vaccinated") +
theme(legend.position="bottom")+
scale_fill_distiller(palette = "Spectral")
H1: Analysis of Maps
I observed a striking visual pattern in this mapping of county hesitancy levels. In many regions of the map, I see geometries of similar colored counties juxtaposed with groups of different colored counties. For example, take a look at this region in the midwest:
The prevelance rates of strongly hesitant residents seems to be clustered into familiar state-shaped regions. I wanted to check how reasonable my hypothesis was,
From this test, it seems like in state identity might have some impact on county covid hesitancy rates. Both Montana and North Dakota voted red in the 2020 election
I ran a cluser analysis to see if I was making this trend up or not
Code
Hesitant Clusters
my_data0_map_cluster <- my_data0_map %>%
select(est_hesitant, long, lat)
head(my_data0_map_cluster, 20)
set.seed(15)
library(mclust)
county_clusts <- my_data0_map_cluster %>%
kmeans(centers = 48)%>%
fitted("classes")%>%
as.character()
my_data0_map_cluster <- my_data0_map_cluster %>% mutate(cluster = county_clusts)
my_data0_map_cluster %>% ggplot(aes(x = long, y = lat)) +
geom_point(aes(color = cluster), alpha = 0.5)+
coord_fixed(ratio = 1.3)+
ggtitle("My-style Hesitant, unstandardized")
Strongly Hesitant Clusters
my_data0_map_cluster <- my_data0_map %>%
select(est_strong_hesitant, long, lat)
set.seed(15)
library(mclust)
county_clusts <- my_data0_map_cluster %>%
kmeans(centers = 48)%>%
fitted("classes")%>%
as.character()
my_data0_map_cluster <- my_data0_map_cluster %>% mutate(cluster = county_clusts)
my_data0_map_cluster %>% ggplot(aes(x = long, y = lat)) +
geom_point(aes(color = cluster), alpha = 0.5)+
coord_fixed(ratio = 1.3)+
ggtitle("My-style Strong Hesitant, unstandardized")
Maps
Coppied Code: HESITANT
## Rows: 83,460
## Columns: 6
## $ est_strong_hesitant <dbl> 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.1…
## $ long <dbl> -85.42801, -85.74313, -85.73740, -85.72594, -…
## $ lat <dbl> 31.61581, 31.61581, 31.65019, 31.66165, 31.69…
## $ est_strong_hesitant_std <dbl> 0.5730137, 0.5730137, 0.5730137, 0.5730137, 0…
## $ long_std <dbl> 0.4581508, 0.4351212, 0.4355399, 0.4363774, 0…
## $ lat_std <dbl> -1.333522, -1.333522, -1.326619, -1.324318, -…
Now what I originally had:
Map of Hes
Map of strongly Hes
end
These clusters seem to be in the shape of states, but I want to compare it to the US map
Code2
Conclusion
My conclusion blah blah blah